/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pos.server.dac.dcs;

import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import pos.domain.Corso;
import pos.domain.OperazioneFinanziaria;
import pos.domain.Utente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashSet;
import java.util.logging.Level;
import java.util.logging.Logger;

import pos.client.dac.dcs.OperazioneFinanziariaDCS;
import pos.server.dac.ConnectionManager;
import pos.server.dac.exceptions.EccezioneCRUD;

/**
 *
 * @author Alessio
 */
public class OperazioneFinanziariaDCSImpl extends RemoteServiceServlet implements OperazioneFinanziariaDCS {

    private static final String FIND_BY_UTENTE_SQL = "SELECT * FROM operazionefinanziaria, u_fo WHERE utente = ? AND operazionefinanziaria.id_of = u_fo.id_of";

    @Override
    public Collection<OperazioneFinanziaria> findByUtente(Utente u) throws EccezioneCRUD {
        Connection con = null;
        PreparedStatement pstmt = null;
        Collection<OperazioneFinanziaria> res = new HashSet<OperazioneFinanziaria>();
        try {

            con = ConnectionManager.getConnection();
            pstmt = con.prepareStatement(FIND_BY_UTENTE_SQL);
            pstmt.setString(1, u.getLogin());
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                OperazioneFinanziaria of = new OperazioneFinanziaria(rs.getString("nome"), rs.getString("categoria"), rs.getInt("somma"), rs.getTimestamp("data").getTime());
                of.setId_of(rs.getInt("id_of"));
                res.add(of);
            }
        } catch (ClassNotFoundException ex) {
            throw new RuntimeException(ex.getCause());
        } catch (SQLException ex) {
            throw new EccezioneCRUD(ex.getMessage());
        } finally {
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
                if (con != null) {
                    con.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(UniversitaServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return res;
    }
}
